import { Component } from "../../core/Component";
import { BehaviorMask } from "./ECAttribute";

// 行为掩码定义
// export enum BehaviorMask {
//     None = 0,           // 无限制
//     CanMove = 1 << 0,   // 可以移动
//     CanCastSkill = 1 << 1,  // 可以释放技能
//     CanAttack = 1 << 2,     // 可以攻击
//     CanBeAttacked = 1 << 3, // 可以被攻击
//     CanUseItem = 1 << 4,    // 可以使用道具
//     CanInteract = 1 << 5,   // 可以与物体交互
//     CanJump = 1 << 6,       // 可以跳跃
//     CanSprint = 1 << 7,     // 可以冲刺
//     CanDodge = 1 << 8,      // 可以闪避
//     CanBlock = 1 << 9,      // 可以格挡
//     CanRevive = 1 << 10,    // 可以复活
//     CanBeRevived = 1 << 11, // 可以被复活
//     CanTrade = 1 << 12,     // 可以交易
//     CanChat = 1 << 13,      // 可以聊天
//     CanJoinParty = 1 << 14, // 可以加入队伍
//     CanJoinGuild = 1 << 15, // 可以加入公会
//     All = 0xFFFFFFFF        // 所有行为都允许
// }

// 行为掩码组件
export class ECBehaviorMask extends Component {
    private _mask: number = 0xffffffff;

    setBehavior(mask: number): void {
        this._mask = mask;
    }

    getBehavior(mask: number): boolean {
        return (this._mask & mask) !== 0;
    }

    addBehavior(mask: number): void {
        this._mask |= mask;
    }

    removeBehavior(mask: number): void {
        this._mask &= ~mask;
    }

    setBehaviorAll(): void {
        this._mask = 0xffffffff;
    }

    hasBehavior(mask: number): boolean {
        return (this._mask & mask) !== 0;
    }
}

